package com.it.schoolbookshop_back.service;

import com.it.schoolbookshop_back.entities.po.User;
import com.it.schoolbookshop_back.entities.dto.UserSettingsDTO;

/**
 * 用户服务接口
 */
public interface UserService {
    
    /**
     * 用户登录
     * @param username 用户名
     * @param password 密码
     * @return 登录成功返回用户对象，失败返回null
     */
    User login(String username, String password);
    
    /**
     * 用户注册
     * @param user 用户对象
     * @return 注册成功返回用户ID，失败返回null
     */
    Integer register(User user);
    
    /**
     * 根据ID获取用户
     * @param id 用户ID
     * @return 用户对象
     */
    User getUserById(Integer id);
    
    /**
     * 检查用户名是否已存在
     * @param username 用户名
     * @return 存在返回true，不存在返回false
     */
    boolean isUsernameExists(String username);
    
    /**
     * 更新用户信息
     * @param user 用户对象
     * @return 更新成功返回true，失败返回false
     */
    boolean updateUser(User user);
    
    /**
     * 更新用户头像
     * @param userId 用户ID
     * @param avatarData 头像二进制数据
     * @param avatarType 头像文件类型
     * @return 是否更新成功
     */
    boolean updateUserAvatar(Integer userId, byte[] avatarData, String avatarType);
    
    /**
     * 验证用户密码
     * @param userId 用户ID
     * @param password 密码
     * @return 密码是否正确
     */
    boolean verifyPassword(Integer userId, String password);
    
    /**
     * 更新用户密码
     * @param userId 用户ID
     * @param newPassword 新密码
     * @return 是否更新成功
     */
    boolean updatePassword(Integer userId, String newPassword);
    
    /**
     * 获取用户设置
     * @param userId 用户ID
     * @return 用户设置DTO
     */
    UserSettingsDTO getUserSettings(Integer userId);
    
    /**
     * 更新用户设置
     * @param userId 用户ID
     * @param settings 用户设置DTO
     * @return 是否更新成功
     */
    boolean updateUserSettings(Integer userId, UserSettingsDTO settings);
} 